Soru & Cevap

İlk açılışta veritabanına alma

22.08.2016 - 11:46

Merhabalar. Bir uygulamam var. İsteğim uygulama ilk yüklendiğinde açılış ekranında bir soru soracak. Bunu veritabanına alacağım. Daha sonra uygulamayı tekrar açtığında ise hep bu veritabanına aldığım bilgiden hareketle işleyecek uygulama. Bunun algoritması nedir yapamadım. Yardımcı olursanız sevinirim.

18 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user baran.karaoguz
baran.karaoguz
24.08.2016 - 05:04

Bütün activitylerin onCreate metodu var activity ilk açıldığında uygulaman onCreate Giriyor onCreatein içinde bir sql sorgusu olusturup if icinde sorgunun null dönüp dönmediğini kontrol ettikten sonra null ise başka activity 'e else ise başka bir işlem yaptırabilirsin dostum 

picture-62423-1460561213.jpg
emre.tsbs
23.08.2016 - 11:53

Doğukan merhaba,

Bahsettiğin mekanizma için Shared preferences yada SQLite veritabanı kullanabilirsin. Ancak tavsiyem SQLite kullanmandır. İnternette örnekleri çokça mevcut. Veritabanını hazırla, açılış sayfasında kullanıcıya işaretleteceğin yada alacağın cevabı çekip doğrudan orada kaydet sqlite içinde hazırlamış olduğun ekle metoduyla. Artık veritabanına eklediğin için nerde istersen çekip kullanabilirsin. Bunların tümünü yaz dersen yazarım ancak bunu senin yapıp takıldığın noktalarda yardım istemen daha doğru olur. Çünkü buraya yazılamayacak kadar fazla bilgi var gibi görünüyor.

Doğukan
24.08.2016 - 12:03
Hocam şimdi veritabanını hazırladım. Bende zaten SQLite kullanıyordum. Açılış sayfasında kaydettirdim kullanıcıya. Fakat ben şurayı halledemedim. Şimdi eğer kullanıcı bir şey kaydetmişse uygulamayı daha sonra açtığında o ekleme sayfası gelmemeli. Kısaca eğer veritabanında veri varsa ekleme sayfası değilde başka bir sayfada açılmalı. Burayı nasıl yapacağım konusunda yardım bekliyorum.
Profile picture for user kemaltürk
kemaltürk
23.08.2016 - 06:36

Veritabanı bu tür bir işlem için fazla lüx kaçar.Sana preferences mekanizmasını araştırmanı öneririm.Bu tür şeyler için daha basit ve daha işlevseldir.

Doğukan
23.08.2016 - 10:02
Hocam preferences mekanizmasına baktım internetten fakat işime yarayacak olan kısmını anlayamadım. Eğer zahmet olmazsa ingilizce veya türkçe kaynak atabilir misiniz link şeklinde?
Profile picture for user doktorbune41
doktorbune41
23.08.2016 - 09:11

Uygulama ilk açıldığında default olarak aslında MainActivity açılır eğer AndroidManifest.xml'i değiştirmediysen.MainActivity Class'ındada ilk OnCreate Metodu çalışır.O mantıkla Yapabilirsin.Bir tane örnek...

MainActivity açıldığında veritabanına bağlanıp sorgulama yapıp, gelen sonucu ekrana göstermek için şöyle bir şey yapabilirsin.Kafana takılan bir yer olursa sorabilirsin. 

//Öncellike MyTask Classını oluştur ardından bu metodları onCreate'nin içine eğer direk 
//Çalışmasını istiyorsan veya fonksiyon içine alıp istediğin yerdede çağırabilirsin.
//Veritabanı sorgularken ProgressDialog Çalıştıyoruz.Kullanıcı işlem yaptığımızı bilsin.


                ProgressDialog pd= new ProgressDialog(MainActivity.this);
                pd.setMessage("İşlem Gerçekleştiriliyor.Lütfen Bekleyiniz..");
                pd.show();
                //MyTask classımısı çalıştırıyoruz.
                new MyTask().execute();



//MainActivity Class'ının içine bir yere,onCreate'nin dışına yani
private class MyTask extends AsyncTask<Void,Void,Void>{
       
        //Mesela Veritabanından ilceKodu'na göre ilceAdi çekip ekrana getircem.
        //Sende kendi veritabanına göre artık soru'mu başka birşeymi sana kalmış. 
 
        private int ilceKodu=19;
        private String ilceAdi="";

        @Override
        protected Void doInBackground(Void... params) {
            try {
                //Benim Uzak veritabanına bağlanmam için JDBC Driver kullanıyorum.
                //url,user ve password bilgilerim MainActivity classımın içinde tanımlı.

                Class.forName("com.mysql.jdbc.Driver");
                Connection con=DriverManager.getConnection(url, user, password);
                Statement st=con.createStatement();
                
                //Sorgumu yazıyorum
                final ResultSet rs=st.executeQuery("SELECT ilceAdi FROM ilceler where ilceKodu='"+ilKodu+"')");

                while(rs.next()) {
               
                    //Veritabanımdan çektiğim bilgileri ilceAdi String'ime atadım.
                    ilceAdi=rs.getString("ilceAdi"));
                    //Loglarada yazdırdım aynı zamanda.
                    Log.d("ad", rs.getString("ilceAdi"));
               
                }
                con.close();

            }catch (Exception e){
                e.printStackTrace();
            }    
            pd.dismiss(); 
            return null;
        }
        //Bu metod sorgulama bittikten sonra napıcaksak buraya yazabiliriz.
        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            //Ben Toast ile veritabanından gelen Bilgiyi Ekrana gösteriyorum.
            //Sen ise 'Android Dialog' kullanabilirsin.Button vs var çünkü orda daha kullanışlı.
             Toast.makeText(getApplicationContext(),"19'ua karşılık gelen ilceAdi= "+ilceAdi, Toast.LENGTH_LONG).show();
         
        }
    }

 

Doğukan
23.08.2016 - 12:46
Hocam pek bilmediğim komutlar kullanmışsın açıkçası pek anlamadım :( Şimdi benim isteğimi biraz daha açayım sana o şekilde yardımcı olursan sevinirim. Mesela bazı uygulamalarda olur ya böyle ilk kez açılınca sana bir şey sorar daha sonra açtığında ise bu ilk açılıştaki cevabına göre devam eder sürekli. Ben bunu sağlayamadım. Kendi düşünceme göre bir çözüm geliştirdim. İlk açılışta boş bir activty açılıyor ve bu sayfanın classında bir sorgulama işlemi ekledim. Yani veritabanından bilgi çekiyor. Eğer boşsa SEÇ isimli activty e yönlendiriyor. Eğer bilgi çekerse yani boş değilse Sayfa1 isimşi activty e yönlendiriyor. Fakat bu şekilde tasarımım çalışmadı ne yazık ki :( yardımcı olabilir misiniz?
Adım Soyadım
23.08.2016 - 01:33
Tasarım Çalışmadı derken? Intent yaptın değilmi? INtent ile başka bir activity'e yönlendirirken Activitymi açılmadı? Eğer bu şekilde olduysa AndroidManifest.xml'e eklememiş olabilirsin Layoutlarını(Activitiylerini).Eğer Intent yapmadıysan ona göre yeniden cevap yazayım
Doğukan
23.08.2016 - 10:00
Hocam Intent yaptım aynen. Fakat uygulamam açıldığında uygulama durduruldu hatası veriyor. Sanırım şu ilk boş activty e eklediğim sorgulama kodu çalışmıyor hata veriyor çözemedim.